In a computing system, host software, or a hypervisor, may provide a simulated computing environment, or a virtual machine (VM), for guest software running on the hypervisor. The VM allows the guest software to execute as if the guest software were running directly on the underlying hardware, or a physical machine.
A typical physical machine (e.g., a processor) operates in at least two modes: a non-root mode and a root mode. The physical machine generally operates in the non-root mode to execute the guest software's non-privileged instructions, but may switch to the root mode upon detecting a privileged instruction that is to be managed by the hypervisor. Switching between modes is commonly referred to as trapping.
VMs are typically implemented based on traditional software virtualization concepts to support virtualization features such as server consolidation, fault containment, security, and resource management. Most said virtualization features are implemented at the cost of significant performance overhead due to traps caused each time a virtualization feature is accessed by the guest software.
Systems and methods are needed to overcome the above-mentioned shortcomings.